﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Joel.Vishnu.Modelo.Entidades;
using Joel.Vishnu.AccesoDatos.Interfaces;
using Joel.Vishnu.AccesoDatos.SQL_Server;
using System.Data.SqlClient;

namespace Joel.Vishnu.Repositorios
{
    public class RepositorioConfiguracion
    {
        #region Constructores

        public RepositorioConfiguracion()
            : base()
        {
            servicioDatosConfiguracion = new ServicioDatosConfiguracion();
        }

        #endregion

        #region Atributos

        private IServicioDatosConfiguracion servicioDatosConfiguracion;

        #endregion

        #region Propiedades

        public IServicioDatosConfiguracion ServicioDatosConfiguracion
        {
            get { return servicioDatosConfiguracion; }
        }

        #endregion

        #region Metodos

        private Configuracion FilaAEntidad(DataRow fila)
        {
            Configuracion configuracion = new Configuracion();
            configuracion.Nombre = (String)fila["Nombre"];
            configuracion.Observacion = (String)fila["Observacion"];
            configuracion.Valor = (String)fila["Valor"];
            return configuracion;
        }

        private List<Configuracion> TablaALista(DataTable tabla)
        {
            var lista = new List<Configuracion>();
            foreach (DataRow fila in tabla.Rows)
                lista.Add(FilaAEntidad(fila));
            return lista;
        }

        public Configuracion DevolverPorNombre(String nombre)
        {
            var entidad = new Configuracion();
            using(var ds = ServicioDatosConfiguracion.Configuraciones_DevolverPorNombre(nombre))
               if(ds.Tables[0].Rows.Count != 0)
               {
                   entidad = FilaAEntidad(ds.Tables[0].Rows[0]);
               }
            return entidad;
        }

        public void Modificar(String nombre, String valor)
        {
            ServicioDatosConfiguracion.Configuraciones_Modificar(nombre, valor);
        }

        #endregion
    }
}
